From abe7187cfb2c19a177a28b9adc236060bf17665e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 28 Oct 2014 00:54:39 -0400 Subject: [PATCH] Add another multi-device invariant The device and window passed to gdk_device_grab() must be on the same display, or things are unlikely to work. Document and assert this. --- gdk/gdkdevice.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 3c9cf672ee..f71ff50485 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -1260,6 +1260,8 @@ get_native_grab_event_mask (GdkEventMask grab_mask) * or the window becomes unviewable. This overrides any previous grab on the device * by this client. * + * Note that @device and @window need to be on the same display. + * * Device grabs are used for operations which need complete control over the * given device events (either pointer or keyboard). For example in GTK+ this * is used for Drag and Drop operations, popup menus and such. @@ -1293,6 +1295,7 @@ gdk_device_grab (GdkDevice *device, g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_GRAB_FAILED); g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_GRAB_FAILED); + g_return_val_if_fail (gdk_window_get_display (window) == gdk_device_get_display (device), GDK_GRAB_FAILED); native = gdk_window_get_toplevel (window); -- 2.30.2